Installation of Camera Traps

In partnership with PNN, WCS, CARDER

mapa
cámaras
SFF Otun-Quimbaya
62 Camera Traps Installed
Authors
Affiliations

Diego Lizcano

IUCN/SSC Tapir Specialist Group (TSG)

Wildlife Conservation Society (WCS)

Juliana Vélez-Gómez

IUCN/SSC Tapir Specialist Group (TSG)

Leonor Valenzuela

Wildlife Conservation Society (WCS)

Jackeline Rivera-Gómez

CARDER

Robinson Galindo-Tarazona

SFF Otún Quimbaya

María Girleza Ramírez-González

SFF Otún Quimbaya

Juan Camilo Mantilla-Castaño

SFF Otún Quimbaya

Published

December 10, 2025

Sampling design with camera traps

We developed a grid of potential camera installation points in Risaralda, in conjunction with Corporación Autónoma Regional de Risaralda (CARDER) and Wildlife Conservation Society (WCS). This network of points was designed to also cover the Otún Quimbaya Flora and Fauna Sanctuary and Los Nevados National Natural Park, using a grid pattern with 500-meter spacing.

Code
library(grateful) # Facilitate Citation of R Packages
library(readxl) # Read Excel Files
library(DT) # A Wrapper of the JavaScript Library 'DataTables'
library(sf) # Simple Features for R
library(mapview) # Interactive Viewing of Spatial Data in R
# library(maps) # Draw Geographical Maps
library(tmap) # Thematic Maps
library(terra) # Spatial Data Analysis
library(elevatr) # Access Elevation Data from Various APIs
library(glue) # easy paste
library(tidyverse) # Easily Install and Load the 'Tidyverse'
Code
##| column: screen-inset-shaded # wide


cameras <- read_sf("C:/CodigoR/screwworm_mountain_tapir/data/cameras.csv")

# Convert to a Spatial Object (sf)
# CRS 4326 is standard WGS84 for Google Earth
cameras_sf <- st_as_sf(cameras, coords = c("Longitude", "Latitude"), crs = 4326) |> select("instalador", "proyecto", "Ecosistema")

puntos_500m <- read_sf("C:/CodigoR/screwworm_mountain_tapir/data/shp/puntos_camaras_500m.geojson")

SFF_Otun_Quimbaya <- read_sf("C:/CodigoR/screwworm_mountain_tapir/data/shp/WDPA_WDOECM_Jan2026_Public_303548_shp-polygons.shp")[,5:9]

PNN_Nevados <- read_sf("C:/CodigoR/screwworm_mountain_tapir/data/shp/WDPA_WDOECM_Jan2026_Public_147_shp-polygons.shp")[,5:9]

PR_Ucumari <- read_sf("C:/CodigoR/screwworm_mountain_tapir/data/shp/WDPA_WDOECM_Jan2026_Public_555555791_shp-polygons.shp")[,5:9]


#corine <- read_sf("C:/CodigoR/screwworm_mountain_tapir/data/shp/ECOSISTEMAS_18062025.gpkg") |> st_transform(4326) 

# 2. Using the extent of another object
#target_bbox <- st_bbox(puntos_500m) |> st_buffer(dist = 0.5) 
#cropped_corine <- st_crop(corine, target_bbox)
# remove corine large from memory
# rm(corine)

croped_corine <- read_sf("C:/CodigoR/screwworm_mountain_tapir/data/shp/corine_cortado.gpkg") |> st_transform(4326) 

# get elevation map
# elevation_18 <- rast(get_elev_raster(cameras_sf, z = 12)) #z =1-14
# bb <-  st_as_sfc(st_bbox(elevation_17)) # make bounding box 




# extract covs using points and add to _sites
# covs_Col_18_sites <- cbind(Col_18_sites, terra::extract(elevation_18, Col_18_sites))
# covs_Col_17_sites <- cbind(Col_17_sites, terra::extract(elevation_17, Col_17_sites))


# get which are in and out
cameras_sf$in_AP = st_intersects(cameras_sf, SFF_Otun_Quimbaya, sparse = FALSE)
# covs_Col_17_sites$in_AP = st_intersects(covs_Col_17_sites, AP_Yasuni, sparse = FALSE)


# make a map
# mapview (cropped_corine, alpha=0.5) + 
#   mapview (elevation_18, alpha=0.5) + 
#   mapview (AP_Ucumari, color = "lightgreen", col.regions = "green", alpha = 0.5) +
#   mapview (AP_Nevados, color = "lightgreen", col.regions = "green", alpha = 0.5) +
#   mapview (AP_Otun, color = "green", col.regions = "green", alpha = 0.5) +
#   mapview(puntos_500m)

#  mapview (cameras_sf, zcol = "in_AP", col.regions =c("red","blue"), burst = TRUE) 

tmap_mode("view")
#> ℹ tmap modes "plot" - "view"
#> ℹ toggle with `tmap::ttm()`
tm_shape(PR_Ucumari) +
  tm_polygons(
    #fill = "dwelling_value",
    col = "green",
    fill = "lightgreen",
    fill_alpha = 0.5) +
tm_shape(PNN_Nevados) +
  tm_polygons(
    #fill = "dwelling_value",
    col = "green",
    #fill = "lightgreen",
    fill_alpha = 0.5) +
  tm_shape(SFF_Otun_Quimbaya) +
  tm_polygons(
    #fill = "dwelling_value",
    col = "green",
    fill = "lightgreen",
    fill_alpha = 0.5) +
tm_shape(puntos_500m) +
      tm_dots(
         size = 0.3,
         #lwd = 1,
         fill = "red",
         col = "black",
         fill_alpha = 0.5
         ) +
    tm_basemap("Esri.WorldTopoMap")+# "CartoDB.Voyager")+# "Stadia.StamenTerrain") + 
    tm_minimap(position = c("left", "top"),
               height = 4,
               width = 5)

Map showing the location of the point network. 500 meter grid.

Stratification by vegetation cover

The MapBiomas land cover map was downloaded and cropped to the projected area of points to have cameras in all land cover types.

Proportional distribution

Forest 2,558,147 2,558,147/5,814,440 = 0.4400 0.4400 × 100 44

Agriculture 3,124,230 3,124,230/5,814,440 = 0.5373 0.5373 × 100 54

Pine plantations 132,063 132,063/5,814,440 = 0.0227 0.0227 × 100 2

TOTAL 5,814,440 1.0000 100

Minimum = 10 points per class Remaining = 100 - (3 × 10) = 70 points

Forest: 10 + (70 × 0.4400) = 10 + 31 = 41 points Agriculture: 10 + (70 × 0.5373) = 10 + 38 = 48 points Pine plantations: 10 + (70 × 0.0227) = 10 + 2 = 12 points (use minimum)

Camera traps installed

By December 2025 we installed 68 camera traps.

Camera trap installing

Camera trap installing

Taking a GPS point

Taking a GPS point

Camera trap installing

Camera trap installing

Camera trap installed

Camera trap installed

Camera trap installing

Camera trap installing
Code
library(leaflet)
library(leafpop)


tm_shape(PR_Ucumari) +
  tm_polygons(
    #fill = "dwelling_value",
    col = "green",
    # fill = "lightgreen",
    fill_alpha = 0.5) +
tm_shape(PNN_Nevados) +
  tm_polygons(
    #fill = "dwelling_value",
    col = "green",
    #fill = "lightgreen",
    fill_alpha = 0.5) +
  tm_shape(SFF_Otun_Quimbaya) +
  tm_polygons(
    #fill = "dwelling_value",
    col = "green",
    fill = "lightgreen",
    fill_alpha = 0.5) +
tm_shape(cameras_sf) +
      tm_dots(
         size = 0.4,
         #lwd = 1,
         fill = "proyecto",
         #col = "black",
         fill_alpha = 0.7
         ) +
    tm_basemap("Esri.WorldImagery")+# "CartoDB.Voyager")+# "Stadia.StamenTerrain") + 
    tm_minimap(position = c("left", "top"),
               height = 4,
               width = 5)

Location of cameras installed in December 2025. Participating institutions: CARDER, WCS, TSG, PNN

Package Citation

Code
pkgs <- cite_packages(output = "paragraph", pkgs="Session", out.dir = ".")
# knitr::kable(pkgs)
pkgs

We used R v. 4.4.2 (R Core Team 2024) and the following R packages: DT v. 0.34.0 (Xie et al. 2025), elevatr v. 0.99.0 (Hollister et al. 2023), glue v. 1.8.0 (Hester and Bryan 2024), leaflet v. 2.2.3 (Cheng et al. 2025), leafpop v. 0.1.0 (Appelhans and Detsch 2021), mapview v. 2.11.4 (Appelhans et al. 2025), sf v. 1.0.21 (Pebesma 2018; Pebesma and Bivand 2023), terra v. 1.8.70 (Hijmans 2025), tidyverse v. 2.0.0 (Wickham et al. 2019), tmap v. 4.2 (Tennekes 2018).

Sesion info

Code
print(sessionInfo(), locale = FALSE)
R version 4.4.2 (2024-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 10 x64 (build 19045)

Matrix products: default


attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] leafpop_0.1.0   leaflet_2.2.3   lubridate_1.9.4 forcats_1.0.0  
 [5] stringr_1.5.2   dplyr_1.1.4     purrr_1.1.0     readr_2.1.5    
 [9] tidyr_1.3.1     tibble_3.2.1    ggplot2_4.0.1   tidyverse_2.0.0
[13] glue_1.8.0      elevatr_0.99.0  terra_1.8-70    tmap_4.2       
[17] mapview_2.11.4  sf_1.0-21       DT_0.34.0       readxl_1.4.3   
[21] grateful_0.3.0 

loaded via a namespace (and not attached):
 [1] tidyselect_1.2.1        farver_2.1.2            S7_0.2.1               
 [4] fastmap_1.2.0           leaflegend_1.2.1        XML_3.99-0.18          
 [7] digest_0.6.37           timechange_0.3.0        lifecycle_1.0.4        
[10] magrittr_2.0.3          compiler_4.4.2          rlang_1.1.6            
[13] tools_4.4.2             yaml_2.3.10             data.table_1.17.8      
[16] knitr_1.50              brew_1.0-10             htmlwidgets_1.6.4      
[19] sp_2.2-0                classInt_0.4-11         RColorBrewer_1.1-3     
[22] abind_1.4-8             KernSmooth_2.23-24      withr_3.0.2            
[25] leafsync_0.1.0          grid_4.4.2              stats4_4.4.2           
[28] cols4all_0.8-1          e1071_1.7-16            leafem_0.2.4           
[31] colorspace_2.1-1        spacesXYZ_1.6-0         progressr_0.15.0       
[34] scales_1.4.0            dichromat_2.0-0.1       cli_3.6.5              
[37] rmarkdown_2.30          generics_0.1.3          rstudioapi_0.17.1      
[40] tzdb_0.4.0              tmaptools_3.3           DBI_1.2.3              
[43] proxy_0.4-27            stars_0.6-8             parallel_4.4.2         
[46] s2_1.1.9                cellranger_1.1.0        base64enc_0.1-3        
[49] vctrs_0.6.5             jsonlite_2.0.0          hms_1.1.3              
[52] systemfonts_1.1.0       crosstalk_1.2.1         jquerylib_0.1.4        
[55] units_0.8-7             maptiles_0.10.0         lwgeom_0.2-14          
[58] leaflet.providers_2.0.0 codetools_0.2-20        stringi_1.8.4          
[61] gtable_0.3.6            raster_3.6-32           logger_0.4.0           
[64] pillar_1.11.1           htmltools_0.5.8.1       satellite_1.0.5        
[67] R6_2.6.1                wk_0.9.4                microbenchmark_1.5.0   
[70] evaluate_1.0.4          lattice_0.22-6          png_0.1-8              
[73] class_7.3-22            uuid_1.2-1              Rcpp_1.1.0             
[76] svglite_2.1.3           xfun_0.52               pkgconfig_2.0.3        

References

Appelhans, Tim, and Florian Detsch. 2021. leafpop: Include Tables, Images and Graphs in Leaflet Pop-Ups. https://CRAN.R-project.org/package=leafpop.
Appelhans, Tim, Florian Detsch, Christoph Reudenbach, and Stefan Woellauer. 2025. mapview: Interactive Viewing of Spatial Data in r. https://CRAN.R-project.org/package=mapview.
Cheng, Joe, Barret Schloerke, Bhaskar Karambelkar, Yihui Xie, and Garrick Aden-Buie. 2025. leaflet: Create Interactive Web Maps with the JavaScript Leaflet Library. https://CRAN.R-project.org/package=leaflet.
Hester, Jim, and Jennifer Bryan. 2024. glue: Interpreted String Literals. https://CRAN.R-project.org/package=glue.
Hijmans, Robert J. 2025. terra: Spatial Data Analysis. https://CRAN.R-project.org/package=terra.
Hollister, Jeffrey, Tarak Shah, Jakub Nowosad, Alec L. Robitaille, Marcus W. Beck, and Mike Johnson. 2023. elevatr: Access Elevation Data from Various APIs. https://doi.org/10.5281/zenodo.8335450.
Pebesma, Edzer. 2018. Simple Features for R: Standardized Support for Spatial Vector Data.” The R Journal 10 (1): 439–46. https://doi.org/10.32614/RJ-2018-009.
Pebesma, Edzer, and Roger Bivand. 2023. Spatial Data Science: With applications in R. Chapman and Hall/CRC. https://doi.org/10.1201/9780429459016.
R Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Tennekes, Martijn. 2018. tmap: Thematic Maps in R.” Journal of Statistical Software 84 (6): 1–39. https://doi.org/10.18637/jss.v084.i06.
Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.
Xie, Yihui, Joe Cheng, Xianying Tan, and Garrick Aden-Buie. 2025. DT: A Wrapper of the JavaScript Library DataTables. https://CRAN.R-project.org/package=DT.

Reuse

Citation

BibTeX citation:
@online{lizcano2025,
  author = {Lizcano, Diego and Vélez-Gómez, Juliana and Valenzuela,
    Leonor and Rivera-Gómez, Jackeline and Galindo-Tarazona, Robinson
    and Girleza Ramírez-González, María and Camilo Mantilla-Castaño,
    Juan},
  title = {Installation of {Camera} {Traps}},
  date = {2025-12-10},
  url = {https://dlizcano.github.io/screwworm_mountain_tapir/blog/2025-12-10-instalacion/},
  langid = {en}
}
For attribution, please cite this work as:
Lizcano, Diego, Juliana Vélez-Gómez, Leonor Valenzuela, Jackeline Rivera-Gómez, Robinson Galindo-Tarazona, María Girleza Ramírez-González, and Juan Camilo Mantilla-Castaño. 2025. “Installation of Camera Traps.” December 10, 2025. https://dlizcano.github.io/screwworm_mountain_tapir/blog/2025-12-10-instalacion/.